package domain;

import java.util.HashMap;
import java.util.Map;

/*
设计思想：
（1）属性：文件夹有：名字、当前目录下的全部文件和当前目录习的全部文件夹
（2）方法：
① 有将刚刚创建的文件加入文件集合的方法
② 删除文件，就是从集合中将文件删除
③ 找到一个文件并返回
④ 在当前目录下创建一个文件夹
⑤ 在当前目录下删除一个存在文件夹
⑥ 找到当前文件夹
 */

public class Directory {
    //文件夹名字
    private String name;
    //创建一个Map集合来存储files，用这个集合还有一个好处，利用了该集合的
    //无法转入重复元素的特点，来限制同个目录下的文件同名的情况
    private Map<String, File> files;
    //创建一个Map集合来存储文件夹，文件夹里面还可以存储其他文件夹
    private Map<String, Directory> directorys;

    public Directory(String name) {
        this.name = name;
        this.files = new HashMap<>();
        this.directorys = new HashMap<>();
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    //将要添加的文件加入当前的文件夹
    public void addFile(File file) {
        files.put(file.getName(), file);
    }

    //删除文件，就是从集合中将文件删除
    public void deleteFile(File file) {
        files.remove(file.getName());
    }

    //找到一个文件并返回
    public File getFile(String fileName) {
        return files.get(fileName);
    }

    //在当前目录下创建一个文件夹
    public void addDirectory(Directory directory) {
        directorys.put(directory.getName(), directory);
    }

    //在当前目录下删除一个存在文件夹
    public void deleteDirectory(Directory directory) {
        directorys.remove(directory.getName());
    }

    //找到当前文件夹
    public Directory getDirectory(String directoryName) {
        return directorys.get(directoryName);
    }

    //获取当前文件夹里面的所有文件
    public Map<String, File> getAllFile() {
        return files;
    }

    //获取当前文件夹里面的所有文件夹
    public Map<String, Directory> getAllDirectory() {
        return directorys;
    }
}
